#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

typedef int QDataType;

typedef struct QueueNode
{
	QDataType val;
	struct QueueNdoe* next;
}QNode;

typedef struct Queue
{
	QNode* phead;
	QNode* ptail;
	int size;
}Queue;

void QueueInit(Queue* qu);

void QueueDesroy(Queue* qu);

void QueuePush(Queue* qu, QDataType x);

void QueuePop(Queue* qu);

QDataType  QueueTop(Queue* qu);

QDataType QueueFront(Queue* qu);

QDataType QueueBack(Queue* qu);

bool QueueEmpty(Queue* qu);

int QueueSize(Queue* qu);

